1. Field of the Invention
The present invention is directed in general to diagnostics for a computer system, and more specifically, to diagnostics for memory and display systems in the computer system.
2. Description of the Related Art
The continual reduction in size and cost of personal computers has been instrumental in the rapid acceptance of computer technology by corporations and consumers. Even with ultra large scale integration technology, which reduces the number of components in personal computers, these personal computers are still highly complex hardware assemblies. Thus, even computers assembled using high quality components and careful assembly procedures are still subject to occasional manufacturing defects and failures during use.
The costs associated with such defects and failures in terms of manufacturer warranty obligations and end user down time are relatively high. Hence, prior to the delivery of the computers to end users following the manufacture or subsequent repair, the computer circuit boards are normally subjected to functional tests to determine whether they operate properly. Furthermore, during use, the user may experience problems relating to either hardware problems or improper software configurations. To isolate the fault, the user may wish to subject his or her computer system to the functional tests to satisfy the user that the hardware or driver level software is not the culprit of the problems.
One type of diagnostic program is embedded into a non-volatile memory of the computer. In an IBM compatible personal computer, the test is called "Power On Self Test" (POST) and is arranged in personal computers as a portion of the basic input/output system (BIOS). Such BIOS-POST diagnostic program is executed automatically and mandatorily when the computer system boots. One problem that occurs with the placement of test codes in the BIOS-POST diagnostic program is the execution speed and the size of the actual code. First, users do not want to wait for an extensive diagnostic testing during each boot. Therefore, the POST-diagnostics routines cannot be as sophisticated and as thorough as possible. Furthermore, the POST diagnostics routine is constrained by very tight memory requirements, and therefore is limited to very simple and time-efficient tests without an easy to use graphical user interface inherently present in the Windows interface.
Another functional testing method deploys specialized diagnostics software which is transferred to the computer system under test via one or more disks. The testing software is typically loaded onto the computer to be tested and a technician or a user initiates the execution of the software for testing the computer. The diagnostic software is designed to test the operation and interconnection of the circuit board components and other hardware, and to provide graphic displays on the monitor indicating the nature of any identified faults. Diagnostic software of this type is commercially available for most computer system manufacturers and original equipment manufacturers. Additionally, after-market diagnostic software is also commercially available from independent software vendors. Unfortunately, these diagnostic software test procedures are relatively inefficient and time consuming for the user or technician to perform. These test procedures are also somewhat inaccurate since they generally do not stimulate the full range of operating environments in which the computers are exposed during operation by the end users. Thus, latent and intermittent faults can be especially difficult to detect using these test procedures.
Typically, each major portion of the computer is tested. In a modem personal computer, these portions include a microprocessor, a memory system, data storage devices, and input/output (I/O) devices such as a display, a keyboard, a mouse, and communication devices, among others. One important component for the computer is the processor, for the processor determines the processing capability of the computer. Another important component is the memory system. Typically, the memory capacity of a modem personal computer is in the range of 16 to 64 megabytes of data and is implemented using a plurality of single or dual-in-line memory modules (SIMMs or DIMMs). DIMMs are replaceable snap-in/snap-out components designed to allow computer users to replace or increase computer memory. The DIMMs typically comprise a small circuit board to which are attached one or two banks of dynamic random access memory (DRAM) chips. The DRAM chips contain the memory cells which are used for storage. The size of the DIMM varies, and is dependent upon the number and the size of the DRAMs used to construct them on the small circuit board.
Due to the large data capacity offered by current DRAM technology, the risk of memory failure can be high. As can be appreciated, a memory fault which results in a data error within a portion of the memory address space must be accurately identified and avoided. Historically, memory diagnostics programs are used to detect and identify faults or errors in memory subsystems of computers upon boot-up of the computers. These memory diagnostics programs test memory by writing specific data patterns to memory and then reading back these patterns for verification. These memory diagnostics programs generate specific patterns and write these patterns to the memory over whatever data is currently present in memory. This read/write testing process is referred to as destructive testing because it destroys the content of the memory being tested. The destructive testing process is not problematic as long as the computer is being booted-up or, after booting-up, the operating system of the computer under test executes only the test software. However, in multi-tasking systems such as Windows-95, many other processes may be running at the same time and may occupy the region of memory being tested. The destructive testing is unacceptable, because it also stops the other processes that may require access to the memory. Furthermore, it is difficult to perform the memory test in multi-tasking operating systems such as the Windows-95 environment because Windows-95 swaps memory in and out of swap files to optimize memory usage. In addition, Windows-95 also moves memory segments around to make room for other memory allocation, as necessary. To further complicate matters, when requesting memory for tests through allocation in conventional manner, the operating system only returns a pointer to the memory buffer available at the time of the request. Thus, the traditional memory allocation technique does not allow the user to specify the exact base memory address at which memory is to be allocated for testing purposes. For these reasons, the process of testing memory in a multi-tasking environment is particularly challenging. Nonetheless, the ability to perform diagnostics in a multi-tasking environment improves the efficiency of the computer system because the diagnostics can proceed in parallel with other tasks. This ability is especially helpful given the large memory capacity of the modern computer and the correspondingly longer testing periods.
Another significant component of the computer system is the component for delivering a visual interface for the user. This is normally performed by the video graphics adapter. Typically, the graphics adapter has a cathode ray tube controller (CRTC) which supervises the functions of the adapter. The CRTC is connected to a video RAM which stores the text or graphics the monitor is to display. The video RAM and the character ROM or RAM is provided to a character generator controlled by the CRTC for rasterizing character data into a bit-map. In one mode, the output of the character generator is provided to a shift register which serializes the bitmap and converts the serial data stream into suitable video signals. Furthermore, to improve the graphics rendering speed and to reduce the load on the processor, the graphics adapter can include its own graphics processor, or accelerator, to render lines, circles and other geometric shapes by itself.
Although the availability of higher capacity video RAM and accelerator devices improves the performance of the graphics system, the presence of these components also increases the complexity of the testing process. The assembly lines of the computer manufacturing plant use human operators to perform the quality check on the monitors. Although the subjective process or checking the quality of the display adapters driving the monitors is relatively simple, the manual verification of the quality of numerous display adapters driving the monitors can be monotonous. Thus, the human operators who assemble and test the display system of the computer can be lulled into a mode where they simply pass every display system assigned to them for quality assurance. Hence, a problem exists in ensuring that the assembly operators are actually checking each display adapter through the associated display monitor. Thus, what is needed is a method for prompting operators at the manufacturing plant to verify the functionality of each video adapter and the monitor the adapter drives.
In sum, users are demanding that their computer be reliable and be available at virtually any time. Computers, however, can experience problems associated with any one of their major components, such as the hard drive, the display, the memory, and the processor. It is important, therefore, to provide a diagnostic capability for the computer system that can test the operation of the computer in a multi-tasking environment to closely simulate the actual environment that the computer system operates in.